﻿(function (wtm) {
    /// 1.返回表单dom内容
    /// 2.获取前端的wtmtpl-searhpanel模板
    /// 3.渲染模板并将模板内容插入到表单前面
    /// 4.移动表单dom到模板插槽中
    wtm.searchpanel_Render = function (para) {
        if (para.beforeMount.length > 0) {
            eval(para.beforeMount + '(para);');
        }

        //获取表单对象
        var $form = $('#' + para.id);

        //获取searchpanel模板
        var divTpl = $('#wtmtpl-searchpanel').html();

        // 3.渲染模板并将模板内容插入到表单前面
        layui.laytpl(divTpl).render(para, function (str) {
            $form.before(str);

            /// 定义
            var $div = $('#div' + para.id);

            // 4.复制表单dom到模板插槽中
            $div.find('.layui-colla-content').append($form);
            // 记录展开状态
            $form.append(`<input type='hidden' name='IsExpanded' value='${para.expanded}' />`);


            //渲染用户自定义按钮模板
            var $tplbtns = $form.find('template[wtm-searchpanel-btns]');
            var $divbtn = $div.find('div.wtm-colla-title-btns');
            $divbtn.prepend($tplbtns.html());
            //阻止seachpanel标题栏中按钮的默认冒泡事件，即阻止触发折叠行为
            $divbtn.find('.layui-btn').on('click', function (e) {
                e.stopPropagation();
            });

            //控制more的显隐
            $divbtn.find('a.wtm-more').on('click', function () {
                var $more = $(this).closest('.layui-colla-item').find('div.wtm-more');
                $more.toggle();
            });

            layui.form.render(null, para.id);
            layui.element.init();

            /*        按钮事件                */
            var $searchbtn = $div.find('a[wtm-searchbtn]');
            //如果渲染重置按钮
            if (para.resetBtn) {
                $div.find('a[wtm-resetbtn]').on('click', function () {
                    wtm.resetForm(para.id);

                    //如果在树形容器内，还要将树形容器的已选项取消
                    if (para.treeContainerId.length > 0) {
                        $('#' + para.treeContainerId).find('.layui-tree .layui-this').removeClass('layui-this');
                    }

                    if (para.resetAndSearch) {
                        wtm.searchbutton_TriggerSearch($searchbtn);
                    }
                });
            }

            layui.element.on('collapse(div' + para.id + ')', function (data) {
                $('#' + para.id).find("input[name='IsExpanded']").val(data.show);
                ff.triggerResize();
            });


            $searchbtn.on('click', function () {
                //刷新表格
                para.gridIds.forEach(function (value, index) {
                    wtm.searchpanel_TableReload(para.id, value);
                });

                //刷新图表 图标功能后做
                //para.chartIds.forEach(function (value, index) {
                //    ff.RefreshChart(value);
                //});
            });

            if (para.mounted.length > 0) {
                eval(para.mounted + '(para);');
            }

        });


    };




    //带防抖的搜索
    wtm.searchbutton_TriggerSearch = function ($el) {
        var obj = {
            id: $el.attr('id'),
            timer: setTimeout(function () {
                $el.click();
            }, 300)
        };
        var exist = wtm.searchBtns.find(function (x) {
            return x.id == obj.id;
        });
        if (exist) {
            clearTimeout(exist.timer);
            var index = wtm.searchBtns.findIndex(function (x) {
                return x.id == obj.id;
            });
            wtm.searchBtns.splice(index, 1);
        }
        wtm.searchBtns.push(obj);
    };

    //点击搜索按钮后记录scroll位置，表格查询并渲染完毕后，恢复scroll位置
    wtm.searchpanel_TableReload = function (formId, tableId) {
        var scrollTop = $('[lay-id="' + tableId + '"] .layui-table-main').scrollTop();

        //如果在treeContainer中，则调用tree的click事件搜索
        var treeId = $('#' + formId).attr('tree-container-id');
        if (treeId != null) {
            var $tree = $('#' + treeId);
            var $selectTree = $tree.find('.layui-this');
            if ($selectTree.length > 0) {
                $selectTree.find('.layui-tree-txt').first().click();

                setTimeout(function () {
                    $('[lay-id="' + tableId + '"] .layui-table-main').animate({ scrollTop: scrollTop + 'px' }, 'fast');
                }, 100);
                return;
            }
        }
        var a = wtm.GetFormData(formId);
        console.log(a);
        layui.table.reload(tableId,
            {
                where: wtm.GetFormData(formId)
            });

        setTimeout(function () {
            $('[lay-id="' + tableId + '"] .layui-table-main').animate({ scrollTop: scrollTop + 'px' }, 'fast');
        }, 100);
    };


    //移除ff，自集成
    wtm.resetForm = function (formId) {
        //清空textbox
        $("#" + formId).find('input[type=text]').each(function () {
            $(this).val('');
        });

        //清空radio
        $("#" + formId).find('input[type=radio]').each(function () {
            var $this = $(this);
            $this.attr('checked', false);

            //选中空项
            if ($this.attr('wtm-null') != undefined) {
                $this.next().click();
            }
        });

        //xmSelect
        $("#" + formId).find('div[wtm-ctype=combobox]').each(function () {
            var $el = $(this);

            //清空隐藏的表单
            $el.find('input[wtm-field]').remove();

            //调用xmSelect的清空
            var target = xmSelect.get('#' + $el.attr('id'), true);
            target.setValue([]);
        });
    }
})(wtm);